1. Field of the Invention
This invention relates to the exchanging of information over a network such as the Internet and more specifically, to the caching of select document information on the client side of a client-server system thereby improving the efficiency and response time of the system.
2. Description of the Related Art
There are numerous applications where a client side user interface (UI) obtains a document from a server over a network. One such application involves a product configuration that is performed over the Internet using a method whereby a client browser obtains a document from a server. This document may, for example, be a web page that contains selectable features of a product. A user can make changes to the document on the client browser by selecting various product features and providing other configuration information. The altered document resulting from this interaction is then submitted to the server where the information provided by the user is processed. Such processing can, for example, produce configuration results that are responsive to the user provided information. After the server has finished processing the provided information, it sends the client a new document that embodies the configuration results. This exchange of documents between the server and client browser can be repeated until the product configuration is complete.
There are various latency problems associated with this type of on-line configuration process. For example, the user experiences the latency involved in server processing. Such processing typically involves accessing a configuration engine that determines any incompatibilities or constraints arising from the selection of certain product features by the user. Additionally, the user experiences the latency associated with the time expended while the document is in transit between the server and the client browser (e.g., network latency). Depending on factors such as the complexity of the product being configured and the number of other users attempting to access the server or configuration engine, the latency attributed to server processing time and transit time can be significant.
One solution offered to alleviate latency associated with server processing time is to cache the configuration results of the most often-selected configuration states on the server side. The document embodying the configuration results of the most often-selected configuration states can also be cached on the server side. Thus, if the user submits a document that reflects a configuration state that is associated with configuration results or a document that the server has stored, then the server does not need to process the user provided document (e.g., the configuration engine does not need to be accessed to generate the configuration results). Rather, the server can send out the stored configuration results or document that reflects those configuration results. However, this solution still suffers from latency resulting from the transit of information from the server to the client browser, whether that information is a document or configuration results.
Another solution offered to alleviate latency involves transferring server side tools (e.g., a configuration engine) to the client side, thereby reducing latency associated with server processing. This solution, however, introduces considerable latency involved in transferring such tools to the client, not to mention that it is infeasible to perform complex configurations using client-side tools. Moreover, what was once a server side latency problem is now a client side latency problem. Additionally, tools such as configuration engines involve a great deal of calculation, and are therefore best implemented on a high performance machine. As such, a user having a lower-end machine may experience excessive delays using such a client side engine.
What is needed, therefore, is a technique that provides a solution to latency associated with server side processing time (e.g., configuration engine processing time), as well as to latency resulting from the transit of information or tools from the server side to the client side.